package com.xiaozhen.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaozhen.common.core.domain.system.SysUser;
import com.xiaozhen.common.core.domain.system.vo.SysUserListVo;
import com.xiaozhen.common.core.domain.system.queryParams.SysUserQueryParam;

/**
 * HISTORY
 *
 * @author zhenweisheng
 * @date 2021/8/5 9:40
 * @description:
 */
public interface SysUserService {

    /**
     * 根据用户名查询用户信息
     *
     * @param username
     * @return
     */
    SysUser selectByUsername(String username);

    /**
     * 根据条件分页查询用户列表
     *
     * @param page
     * @param queryParam
     * @return
     */
    Page<SysUserListVo> selectUserList(Page<SysUser> page, SysUserQueryParam queryParam);

    /**
     * 修改用户状态
     *
     * @param sysUser
     * @return
     */
    Integer updateUserStatus(SysUser sysUser);

    /**
     * 根据用户ID查询用户信息
     *
     * @param userId
     * @return
     */
    SysUser selectUserById(Long userId);

    /**
     * 检查用户用户名是否唯一
     *
     * @param userName
     * @return
     */
    Boolean checkUserNameUnique(String userName);

    /**
     * 检查用户手机号是否唯一
     *
     * @param user
     * @return
     */
    Boolean checkPhoneUnique(SysUser user);

    /**
     * 检查用户邮箱是否唯一
     *
     * @param user
     * @return
     */
    Boolean checkEmailUnique(SysUser user);

    /**
     * 添加用户信息
     *
     * @param user
     * @return
     */
    Integer insertUser(SysUser user);

    /**
     * 检查用户是否允许操作
     *
     * @param user
     */
    void checkUserAllowed(SysUser user);

    /**
     * 更改用户信息
     *
     * @param user
     * @return
     */
    Integer updateUser(SysUser user);

    /**
     * 删除用户
     *
     * @param userIds
     * @return
     */
    Integer deleteUserByIds(Long[] userIds);

    /**
     * 根据用户ID查询用户所属角色组
     *
     * @param userId 用户名
     * @return 结果
     */
    String selectUserRoleGroup(Long userId);

    /**
     * 重置用户密码
     *
     * @param userId 用户信息
     * @param password
     * @return 结果
     */
     int resetUserPwd(Long userId, String password);

    /**
     * 更改头像
     * @param userId
     * @param url
     * @return
     */
    int updateUserAvatar(Long userId, String url);
}
